/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import Utiles.Utiles;
import entidades.DetallePedidoServicioImpl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import persistencia.agente.DetallePedidoServicioAgente;

/**
 *
 * @author mariodante
 */
public class IntermediarioDetallePedidoServicio extends IntermediarioPersistencia {

//DETALLE_PEDIDO_SERVICIO (oidDetallePedidoServicio, descripcion, fechaHoraInicio, duracion, importeSubtotal, oidPedido, oidEmpleado, oidServicio   
    @Override
    protected String generarSQLBuscarConCriterio(Criterio criterio) {
         return "SELECT * FROM DETALLE_PEDIDO_SERVICIO WHERE " + criterio.convertirAString().toString();
    }

    @Override
    protected String generarSQLBuscarTodo() {
          return "SELECT * FROM DETALLE_PEDIDO_SERVICIO";
    }

    @Override
    protected String generarSQLBuscarXOid(String oid) {
         return "SELECT * FROM DETALLE_PEDIDO_SERVICIO WHERE oidDetallePedidoServicio = '" + oid +"'";
    }

    @Override
    protected String generarSQLGuardar(Object objeto) {
      DetallePedidoServicioAgente ob = (DetallePedidoServicioAgente) objeto;
        return  "INSERT INTO DETALLE_PEDIDO_SERVICIO (oidDetallePedidoServicio, descripcion, fechaHoraInicio, duracion, importeSubtotal,"
                + " oidPedido, oidEmpleado, oidServicio ) VALUES "
                + "('" +generarOid()
                //+ ob.getOid() == null || ob.getOid().trim().equals("")? generarOid() : ob.getOid()
                +"', '"+ ob.getDescripcion()
                +"', '"+  Utiles.convertirATIMESTAMP(ob.getFechaHoraInicio())
                +"', "+  ob.getDuracion()
                +", "+ ob.getImporteSubtotal()
                +", '"+ ob.getOidPedido()
                +"', '"+ ob.getOidEmpleado()
                +"', '"+ ob.getOidServicio()
                + "')";
                  
    }

    @Override
    protected String generarSQLActualizar(Object objeto) {
        DetallePedidoServicioAgente ob = (DetallePedidoServicioAgente) objeto;
        //oidDetallePedidoServicio, descripcion, fechaHoraInicio, duracion, importeSubtotal, oidPedido, oidEmpleado, oidServicio
        return  "UPDATE DETALLE_PEDIDO_SERVICIO SET "
                + "descripcion = '" + ob.getDescripcion()
                + "', fechaHoraInicio = '" +  Utiles.convertirATIMESTAMP( ob.getFechaHoraInicio()) 
                + "', duracion = " + ob.getDuracion()
                + ", importeSubtotal = " + ob.getImporteSubtotal()
                + ", oidPedido = '" + ob.getOidPedido()
                + "', oidEmpleado = '" + ob.getOidEmpleado()
                + "', oidServicio = '" + ob.getOidServicio()
                + "' WHERE oidDetallePedidoServicio = '" + ob.getOid() +"'";
    }

    @Override
    protected String generarSQLEliminar(Object objeto) {
      return "DELETE FROM DETALLE_PEDIDO_SERVICIO WHERE oidDetallePedidoServicio = '" + ((Agente)objeto).getOid() +"'";
    }

    @Override
    protected List<Object> convertirAObjeto(ResultSet result) {
       List<Object> resultado = new ArrayList<Object>();
        
       DetallePedidoServicioImpl implementacion;
        DetallePedidoServicioAgente agente;
       
        try {
            while (result.next()) {
                implementacion = new DetallePedidoServicioImpl();
                agente = new DetallePedidoServicioAgente();
                agente.setDetallePedidoServicio(implementacion);
                    
                agente.setOid(result.getString("oidDetallePedidoServicio"));
                agente.setDescripcion(result.getString("descripcion"));
                agente.setFechaHoraInicio(result.getDate("fechaHoraInicio"));
                agente.setDuracion(result.getInt("duracion"));
                agente.setImporteSubtotal(result.getDouble("importeSubtotal"));
                agente.setOidPedido(result.getString("oidPedido"));
                agente.setOidEmpleado(result.getString("oidEmpleado"));
                agente.setOidServicio(result.getString("oidServicio"));
                
              resultado.add(agente);
                
            }

        } catch (Exception e) {
            System.out.println("Error en materialización: "+ e.toString());
        }    
        
        return resultado;
    }

    @Override
    protected boolean guardarObjetosCompuestos(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    
}
